package org.madmac.usuario;

import org.madmac.pessoa.Pessoa;
import org.madmac.pessoa.PessoaBo;
import org.wakeful.conn.Connection;

/**
 *
 * @author atila camurca
 */
public class UsuarioBo {

	private static UsuarioBo instance;

	private UsuarioBo() {
	}

   public static UsuarioBo getInstance() {
		if (instance == null) {
			instance = new UsuarioBo();		
		}
		return instance;
	}

   public Integer validateAndCreate(Usuario usuario, Pessoa pessoa) throws Exception {
      // TODO: validação.
      Integer id = null;
      try {
         Connection.getInstance().setAutoCommit(false);
         Integer idPessoa = PessoaBo.getInstance().validateAndCreate(pessoa);
         if (idPessoa != null) {
            usuario.getPessoa().setIdPessoa(idPessoa);
            id = (Integer) UsuarioDao.getInstance().create(usuario);
            Connection.getInstance().commit();
            return id;
         } else {
            Connection.getInstance().rollback();
            throw new Exception("Erro ao inserir Novo Usuário. Problemas com o Nome do usuário.");
         }
      } catch (Exception e) {
         Connection.getInstance().rollback();
         throw new Exception(e);
      } finally {
         Connection.getInstance().setAutoCommit(true);
      }
   }
}

